<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::RegionGrowing&lt; PointT, NormalT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_region_growing.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="classpcl_1_1_region_growing-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::RegionGrowing&lt; PointT, NormalT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p>Implements the well known Region Growing algorithm used for segmentation. Description can be found in the article "Segmentation of point clouds using smoothness constraint" by T. Rabbania, F. A. van den Heuvelb, G. Vosselmanc. In addition to residual test, the possibility to test curvature is added.  
 <a href="classpcl_1_1_region_growing.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="region__growing_8h_source.html">region_growing.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::RegionGrowing&lt; PointT, NormalT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_region_growing.png" usemap="#pcl::RegionGrowing_3C_20PointT_2C_20NormalT_20_3E_map" alt=""/>
  <map id="pcl::RegionGrowing_3C_20PointT_2C_20NormalT_20_3E_map" name="pcl::RegionGrowing_3C_20PointT_2C_20NormalT_20_3E_map">
<area href="classpcl_1_1_p_c_l_base.html" title="PCL base class. Implements methods that are used by most PCL algorithms." alt="pcl::PCLBase&lt; PointT &gt;" shape="rect" coords="0,0,236,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a9ff687d22b2c7db8325c3483488dcaff"><td class="memItemLeft" align="right" valign="top"><a id="a9ff687d22b2c7db8325c3483488dcaff"></a>
typedef <a class="el" href="classpcl_1_1search_1_1_search.html">pcl::search::Search</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:a9ff687d22b2c7db8325c3483488dcaff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c9f2170d20e26e864ceb30ce07ee6eb"><td class="memItemLeft" align="right" valign="top"><a id="a0c9f2170d20e26e864ceb30ce07ee6eb"></a>
typedef KdTree::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a0c9f2170d20e26e864ceb30ce07ee6eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0abcac01820e2cbac433e04c57d3fe09"><td class="memItemLeft" align="right" valign="top"><a id="a0abcac01820e2cbac433e04c57d3fe09"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Normal</b></td></tr>
<tr class="separator:a0abcac01820e2cbac433e04c57d3fe09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3625ed32c993e612ec4304a7761a5352"><td class="memItemLeft" align="right" valign="top"><a id="a3625ed32c993e612ec4304a7761a5352"></a>
typedef Normal::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>NormalPtr</b></td></tr>
<tr class="separator:a3625ed32c993e612ec4304a7761a5352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a094821dd021aed2a0ed290c3ebf2a60d"><td class="memItemLeft" align="right" valign="top"><a id="a094821dd021aed2a0ed290c3ebf2a60d"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a094821dd021aed2a0ed290c3ebf2a60d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const  &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a32553136086e9bab3f0f9482ae088576"><td class="memItemLeft" align="right" valign="top"><a id="a32553136086e9bab3f0f9482ae088576"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a32553136086e9bab3f0f9482ae088576">RegionGrowing</a> ()</td></tr>
<tr class="memdesc:a32553136086e9bab3f0f9482ae088576"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor that sets default values for member variables. <br /></td></tr>
<tr class="separator:a32553136086e9bab3f0f9482ae088576"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd5307cad362027812ce6703af129046"><td class="memItemLeft" align="right" valign="top"><a id="abd5307cad362027812ce6703af129046"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#abd5307cad362027812ce6703af129046">~RegionGrowing</a> ()</td></tr>
<tr class="memdesc:abd5307cad362027812ce6703af129046"><td class="mdescLeft">&#160;</td><td class="mdescRight">This destructor destroys the cloud, normals and search method used for finding KNN. In other words it frees memory. <br /></td></tr>
<tr class="separator:abd5307cad362027812ce6703af129046"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a503eb2ff26d2ff282332c62665cdf451"><td class="memItemLeft" align="right" valign="top"><a id="a503eb2ff26d2ff282332c62665cdf451"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a503eb2ff26d2ff282332c62665cdf451">getMinClusterSize</a> ()</td></tr>
<tr class="memdesc:a503eb2ff26d2ff282332c62665cdf451"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the minimum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a503eb2ff26d2ff282332c62665cdf451"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac040a7d547bb09b295386045725aa848"><td class="memItemLeft" align="right" valign="top"><a id="ac040a7d547bb09b295386045725aa848"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ac040a7d547bb09b295386045725aa848">setMinClusterSize</a> (int min_cluster_size)</td></tr>
<tr class="memdesc:ac040a7d547bb09b295386045725aa848"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the minimum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:ac040a7d547bb09b295386045725aa848"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7bef7a2920c179c99928acc7474c41ab"><td class="memItemLeft" align="right" valign="top"><a id="a7bef7a2920c179c99928acc7474c41ab"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a7bef7a2920c179c99928acc7474c41ab">getMaxClusterSize</a> ()</td></tr>
<tr class="memdesc:a7bef7a2920c179c99928acc7474c41ab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the maximum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a7bef7a2920c179c99928acc7474c41ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51294408aa0da3e72690e9ab03bae90d"><td class="memItemLeft" align="right" valign="top"><a id="a51294408aa0da3e72690e9ab03bae90d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a51294408aa0da3e72690e9ab03bae90d">setMaxClusterSize</a> (int max_cluster_size)</td></tr>
<tr class="memdesc:a51294408aa0da3e72690e9ab03bae90d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the maximum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a51294408aa0da3e72690e9ab03bae90d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae14b6b9cb6a6aaf8872c3c965f2e6e00"><td class="memItemLeft" align="right" valign="top"><a id="ae14b6b9cb6a6aaf8872c3c965f2e6e00"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ae14b6b9cb6a6aaf8872c3c965f2e6e00">getSmoothModeFlag</a> () const</td></tr>
<tr class="memdesc:ae14b6b9cb6a6aaf8872c3c965f2e6e00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the flag value. This flag signalizes which mode of algorithm will be used. If it is set to true than it will work as said in the article. This means that it will be testing the angle between normal of the current point and it's neighbours normal. Otherwise, it will be testing the angle between normal of the current point and normal of the initial point that was chosen for growing new segment. <br /></td></tr>
<tr class="separator:ae14b6b9cb6a6aaf8872c3c965f2e6e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af10c614af98ec42bacf015f7db6b9935"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#af10c614af98ec42bacf015f7db6b9935">setSmoothModeFlag</a> (bool value)</td></tr>
<tr class="memdesc:af10c614af98ec42bacf015f7db6b9935"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function allows to turn on/off the smoothness constraint.  <a href="classpcl_1_1_region_growing.html#af10c614af98ec42bacf015f7db6b9935">更多...</a><br /></td></tr>
<tr class="separator:af10c614af98ec42bacf015f7db6b9935"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa86a85c140e251c5a5d4223482678134"><td class="memItemLeft" align="right" valign="top"><a id="aa86a85c140e251c5a5d4223482678134"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aa86a85c140e251c5a5d4223482678134">getCurvatureTestFlag</a> () const</td></tr>
<tr class="memdesc:aa86a85c140e251c5a5d4223482678134"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the flag that signalize if the curvature test is turned on/off. <br /></td></tr>
<tr class="separator:aa86a85c140e251c5a5d4223482678134"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f7a093b9cdc5337309cdeabffc1cd92"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a1f7a093b9cdc5337309cdeabffc1cd92">setCurvatureTestFlag</a> (bool value)</td></tr>
<tr class="memdesc:a1f7a093b9cdc5337309cdeabffc1cd92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to turn on/off the curvature test. Note that at least one test (residual or curvature) must be turned on. If you are turning curvature test off then residual test will be turned on automatically.  <a href="classpcl_1_1_region_growing.html#a1f7a093b9cdc5337309cdeabffc1cd92">更多...</a><br /></td></tr>
<tr class="separator:a1f7a093b9cdc5337309cdeabffc1cd92"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07f77c72b5c223988455944f8a86dc03"><td class="memItemLeft" align="right" valign="top"><a id="a07f77c72b5c223988455944f8a86dc03"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a07f77c72b5c223988455944f8a86dc03">getResidualTestFlag</a> () const</td></tr>
<tr class="memdesc:a07f77c72b5c223988455944f8a86dc03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the flag that signalize if the residual test is turned on/off. <br /></td></tr>
<tr class="separator:a07f77c72b5c223988455944f8a86dc03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1846b7d16b40f3187c42c81b80abc79"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ad1846b7d16b40f3187c42c81b80abc79">setResidualTestFlag</a> (bool value)</td></tr>
<tr class="memdesc:ad1846b7d16b40f3187c42c81b80abc79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to turn on/off the residual test. Note that at least one test (residual or curvature) must be turned on. If you are turning residual test off then curvature test will be turned on automatically.  <a href="classpcl_1_1_region_growing.html#ad1846b7d16b40f3187c42c81b80abc79">更多...</a><br /></td></tr>
<tr class="separator:ad1846b7d16b40f3187c42c81b80abc79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a942fc25d32886ee34262e7ff3fe675bf"><td class="memItemLeft" align="right" valign="top"><a id="a942fc25d32886ee34262e7ff3fe675bf"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a942fc25d32886ee34262e7ff3fe675bf">getSmoothnessThreshold</a> () const</td></tr>
<tr class="memdesc:a942fc25d32886ee34262e7ff3fe675bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns smoothness threshold. <br /></td></tr>
<tr class="separator:a942fc25d32886ee34262e7ff3fe675bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa88700937bc1090bfca521a93b80f71"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aaa88700937bc1090bfca521a93b80f71">setSmoothnessThreshold</a> (float theta)</td></tr>
<tr class="memdesc:aaa88700937bc1090bfca521a93b80f71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set smoothness threshold used for testing the points.  <a href="classpcl_1_1_region_growing.html#aaa88700937bc1090bfca521a93b80f71">更多...</a><br /></td></tr>
<tr class="separator:aaa88700937bc1090bfca521a93b80f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a01f23a15454f9c214be1319ff88cc8"><td class="memItemLeft" align="right" valign="top"><a id="a8a01f23a15454f9c214be1319ff88cc8"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8a01f23a15454f9c214be1319ff88cc8">getResidualThreshold</a> () const</td></tr>
<tr class="memdesc:a8a01f23a15454f9c214be1319ff88cc8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns residual threshold. <br /></td></tr>
<tr class="separator:a8a01f23a15454f9c214be1319ff88cc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e3de83fe8e15eccc7f56f4f8762d936"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a1e3de83fe8e15eccc7f56f4f8762d936">setResidualThreshold</a> (float residual)</td></tr>
<tr class="memdesc:a1e3de83fe8e15eccc7f56f4f8762d936"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set residual threshold used for testing the points.  <a href="classpcl_1_1_region_growing.html#a1e3de83fe8e15eccc7f56f4f8762d936">更多...</a><br /></td></tr>
<tr class="separator:a1e3de83fe8e15eccc7f56f4f8762d936"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6463a53955895a5688dddbfcc8c173c2"><td class="memItemLeft" align="right" valign="top"><a id="a6463a53955895a5688dddbfcc8c173c2"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a6463a53955895a5688dddbfcc8c173c2">getCurvatureThreshold</a> () const</td></tr>
<tr class="memdesc:a6463a53955895a5688dddbfcc8c173c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns curvature threshold. <br /></td></tr>
<tr class="separator:a6463a53955895a5688dddbfcc8c173c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7554b09a34b2997992c44b947d4ac07"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ad7554b09a34b2997992c44b947d4ac07">setCurvatureThreshold</a> (float curvature)</td></tr>
<tr class="memdesc:ad7554b09a34b2997992c44b947d4ac07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set curvature threshold used for testing the points.  <a href="classpcl_1_1_region_growing.html#ad7554b09a34b2997992c44b947d4ac07">更多...</a><br /></td></tr>
<tr class="separator:ad7554b09a34b2997992c44b947d4ac07"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa649d6423eb7c7e247d9a09bd39ec5e1"><td class="memItemLeft" align="right" valign="top"><a id="aa649d6423eb7c7e247d9a09bd39ec5e1"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aa649d6423eb7c7e247d9a09bd39ec5e1">getNumberOfNeighbours</a> () const</td></tr>
<tr class="memdesc:aa649d6423eb7c7e247d9a09bd39ec5e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of nearest neighbours used for KNN. <br /></td></tr>
<tr class="separator:aa649d6423eb7c7e247d9a09bd39ec5e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d2c77b68143901495b42fd0dfbb241c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a4d2c77b68143901495b42fd0dfbb241c">setNumberOfNeighbours</a> (unsigned int neighbour_number)</td></tr>
<tr class="memdesc:a4d2c77b68143901495b42fd0dfbb241c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set the number of neighbours. For more information check the article.  <a href="classpcl_1_1_region_growing.html#a4d2c77b68143901495b42fd0dfbb241c">更多...</a><br /></td></tr>
<tr class="separator:a4d2c77b68143901495b42fd0dfbb241c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a9fdb648434826b0bf7cd1a616f85f5"><td class="memItemLeft" align="right" valign="top"><a id="a9a9fdb648434826b0bf7cd1a616f85f5"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a9a9fdb648434826b0bf7cd1a616f85f5">getSearchMethod</a> () const</td></tr>
<tr class="memdesc:a9a9fdb648434826b0bf7cd1a616f85f5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the pointer to the search method that is used for KNN. <br /></td></tr>
<tr class="separator:a9a9fdb648434826b0bf7cd1a616f85f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23191c1b6a711340a91740b3717140ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a23191c1b6a711340a91740b3717140ff">setSearchMethod</a> (const KdTreePtr &amp;tree)</td></tr>
<tr class="memdesc:a23191c1b6a711340a91740b3717140ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows to set search method that will be used for finding KNN.  <a href="classpcl_1_1_region_growing.html#a23191c1b6a711340a91740b3717140ff">更多...</a><br /></td></tr>
<tr class="separator:a23191c1b6a711340a91740b3717140ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60c617a3f8cccfa6c5f5d7e41c7ad14e"><td class="memItemLeft" align="right" valign="top"><a id="a60c617a3f8cccfa6c5f5d7e41c7ad14e"></a>
NormalPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a60c617a3f8cccfa6c5f5d7e41c7ad14e">getInputNormals</a> () const</td></tr>
<tr class="memdesc:a60c617a3f8cccfa6c5f5d7e41c7ad14e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns normals. <br /></td></tr>
<tr class="separator:a60c617a3f8cccfa6c5f5d7e41c7ad14e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26a874b69b4c786886fece175990e727"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a26a874b69b4c786886fece175990e727">setInputNormals</a> (const NormalPtr &amp;norm)</td></tr>
<tr class="memdesc:a26a874b69b4c786886fece175990e727"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method sets the normals. They are needed for the algorithm, so if no normals will be set, the algorithm would not be able to segment the points.  <a href="classpcl_1_1_region_growing.html#a26a874b69b4c786886fece175990e727">更多...</a><br /></td></tr>
<tr class="separator:a26a874b69b4c786886fece175990e727"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9ef8286d7ced3ff97667653b96a4bd21"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a9ef8286d7ced3ff97667653b96a4bd21">extract</a> (std::vector&lt; <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &gt; &amp;clusters)</td></tr>
<tr class="memdesc:a9ef8286d7ced3ff97667653b96a4bd21"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method launches the segmentation algorithm and returns the clusters that were obtained during the segmentation.  <a href="classpcl_1_1_region_growing.html#a9ef8286d7ced3ff97667653b96a4bd21">更多...</a><br /></td></tr>
<tr class="separator:a9ef8286d7ced3ff97667653b96a4bd21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a72b71b0e82a8080dcd26142968eb21e3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a72b71b0e82a8080dcd26142968eb21e3">getSegmentFromPoint</a> (int index, <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &amp;cluster)</td></tr>
<tr class="memdesc:a72b71b0e82a8080dcd26142968eb21e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">For a given point this function builds a segment to which it belongs and returns this segment.  <a href="classpcl_1_1_region_growing.html#a72b71b0e82a8080dcd26142968eb21e3">更多...</a><br /></td></tr>
<tr class="separator:a72b71b0e82a8080dcd26142968eb21e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb1ae724085424bc60bb4cf27ff27283"><td class="memItemLeft" align="right" valign="top"><a id="aeb1ae724085424bc60bb4cf27ff27283"></a>
<a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b.html">pcl::PointXYZRGB</a> &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aeb1ae724085424bc60bb4cf27ff27283">getColoredCloud</a> ()</td></tr>
<tr class="memdesc:aeb1ae724085424bc60bb4cf27ff27283"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the cloud was successfully segmented, then function returns colored cloud. Otherwise it returns an empty pointer. Points that belong to the same segment have the same color. But this function doesn't guarantee that different segments will have different color(it all depends on RNG). Points that were not listed in the indices array will have red color. <br /></td></tr>
<tr class="separator:aeb1ae724085424bc60bb4cf27ff27283"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1aed39b32b17e43362d5d72112e6e3d2"><td class="memItemLeft" align="right" valign="top"><a id="a1aed39b32b17e43362d5d72112e6e3d2"></a>
<a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a> &gt;::Ptr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a1aed39b32b17e43362d5d72112e6e3d2">getColoredCloudRGBA</a> ()</td></tr>
<tr class="memdesc:a1aed39b32b17e43362d5d72112e6e3d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">If the cloud was successfully segmented, then function returns colored cloud. Otherwise it returns an empty pointer. Points that belong to the same segment have the same color. But this function doesn't guarantee that different segments will have different color(it all depends on RNG). Points that were not listed in the indices array will have red color. <br /></td></tr>
<tr class="separator:a1aed39b32b17e43362d5d72112e6e3d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a510496b033f5261bc0325da4a9ec0e3b"><td class="memItemLeft" align="right" valign="top"><a id="a510496b033f5261bc0325da4a9ec0e3b"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a510496b033f5261bc0325da4a9ec0e3b">prepareForSegmentation</a> ()</td></tr>
<tr class="memdesc:a510496b033f5261bc0325da4a9ec0e3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method simply checks if it is possible to execute the segmentation algorithm with the current settings. If it is possible then it returns true. <br /></td></tr>
<tr class="separator:a510496b033f5261bc0325da4a9ec0e3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a541edb18fa47990020ceb640186c95dc"><td class="memItemLeft" align="right" valign="top"><a id="a541edb18fa47990020ceb640186c95dc"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a541edb18fa47990020ceb640186c95dc">findPointNeighbours</a> ()</td></tr>
<tr class="memdesc:a541edb18fa47990020ceb640186c95dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method finds KNN for each point and saves them to the array because the algorithm needs to find KNN a few times. <br /></td></tr>
<tr class="separator:a541edb18fa47990020ceb640186c95dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9fdb4c1edc24da8b149866dcfc819d5"><td class="memItemLeft" align="right" valign="top"><a id="ad9fdb4c1edc24da8b149866dcfc819d5"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">applySmoothRegionGrowingAlgorithm</a> ()</td></tr>
<tr class="memdesc:ad9fdb4c1edc24da8b149866dcfc819d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function implements the algorithm described in the article "Segmentation of point clouds using smoothness constraint" by T. Rabbania, F. A. van den Heuvelb, G. Vosselmanc. <br /></td></tr>
<tr class="separator:ad9fdb4c1edc24da8b149866dcfc819d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ac4219f1374555e9dd76a7338905a6d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a3ac4219f1374555e9dd76a7338905a6d">growRegion</a> (int initial_seed, int segment_number)</td></tr>
<tr class="memdesc:a3ac4219f1374555e9dd76a7338905a6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method grows a segment for the given seed point. And returns the number of its points.  <a href="classpcl_1_1_region_growing.html#a3ac4219f1374555e9dd76a7338905a6d">更多...</a><br /></td></tr>
<tr class="separator:a3ac4219f1374555e9dd76a7338905a6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71c8914239d04758cc94e59886b8308a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a71c8914239d04758cc94e59886b8308a">validatePoint</a> (int initial_seed, int point, int nghbr, bool &amp;is_a_seed) const</td></tr>
<tr class="memdesc:a71c8914239d04758cc94e59886b8308a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is checking if the point with index 'nghbr' belongs to the segment. If so, then it returns true. It also checks if this point can serve as the seed.  <a href="classpcl_1_1_region_growing.html#a71c8914239d04758cc94e59886b8308a">更多...</a><br /></td></tr>
<tr class="separator:a71c8914239d04758cc94e59886b8308a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6effde13de0fe92a2e006dcdcde79ef"><td class="memItemLeft" align="right" valign="top"><a id="af6effde13de0fe92a2e006dcdcde79ef"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">assembleRegions</a> ()</td></tr>
<tr class="memdesc:af6effde13de0fe92a2e006dcdcde79ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function simply assembles the regions from list of point labels. Each cluster is an array of point indices. <br /></td></tr>
<tr class="separator:af6effde13de0fe92a2e006dcdcde79ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:aaf5fe4e97596798764ebd768193b3054"><td class="memItemLeft" align="right" valign="top"><a id="aaf5fe4e97596798764ebd768193b3054"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aaf5fe4e97596798764ebd768193b3054">min_pts_per_cluster_</a></td></tr>
<tr class="memdesc:aaf5fe4e97596798764ebd768193b3054"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the minimum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:aaf5fe4e97596798764ebd768193b3054"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a740af3118950d0bef662a7ab60177b6a"><td class="memItemLeft" align="right" valign="top"><a id="a740af3118950d0bef662a7ab60177b6a"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a740af3118950d0bef662a7ab60177b6a">max_pts_per_cluster_</a></td></tr>
<tr class="memdesc:a740af3118950d0bef662a7ab60177b6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the maximum number of points that a cluster needs to contain in order to be considered valid. <br /></td></tr>
<tr class="separator:a740af3118950d0bef662a7ab60177b6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d9411960ec9656fa6e727e0558d57f7"><td class="memItemLeft" align="right" valign="top"><a id="a8d9411960ec9656fa6e727e0558d57f7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8d9411960ec9656fa6e727e0558d57f7">smooth_mode_flag_</a></td></tr>
<tr class="memdesc:a8d9411960ec9656fa6e727e0558d57f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag that signalizes if the smoothness constraint will be used. <br /></td></tr>
<tr class="separator:a8d9411960ec9656fa6e727e0558d57f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a5665f6c84af901ed018521b8b3677d"><td class="memItemLeft" align="right" valign="top"><a id="a1a5665f6c84af901ed018521b8b3677d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a></td></tr>
<tr class="memdesc:a1a5665f6c84af901ed018521b8b3677d"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set to true then curvature test will be done during segmentation. <br /></td></tr>
<tr class="separator:a1a5665f6c84af901ed018521b8b3677d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa217ad1c027e687ff378edb852ca3052"><td class="memItemLeft" align="right" valign="top"><a id="aa217ad1c027e687ff378edb852ca3052"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a></td></tr>
<tr class="memdesc:aa217ad1c027e687ff378edb852ca3052"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set to true then residual test will be done during segmentation. <br /></td></tr>
<tr class="separator:aa217ad1c027e687ff378edb852ca3052"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87c8818e2c3eb306f1e44fa98bb55a89"><td class="memItemLeft" align="right" valign="top"><a id="a87c8818e2c3eb306f1e44fa98bb55a89"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a87c8818e2c3eb306f1e44fa98bb55a89">theta_threshold_</a></td></tr>
<tr class="memdesc:a87c8818e2c3eb306f1e44fa98bb55a89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used for testing the smoothness between points. <br /></td></tr>
<tr class="separator:a87c8818e2c3eb306f1e44fa98bb55a89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9039b5534be233e1aa26bbadeecd42a"><td class="memItemLeft" align="right" valign="top"><a id="ab9039b5534be233e1aa26bbadeecd42a"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#ab9039b5534be233e1aa26bbadeecd42a">residual_threshold_</a></td></tr>
<tr class="memdesc:ab9039b5534be233e1aa26bbadeecd42a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used in residual test. <br /></td></tr>
<tr class="separator:ab9039b5534be233e1aa26bbadeecd42a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8afe22fadb13bbd9a0d90753129b336c"><td class="memItemLeft" align="right" valign="top"><a id="a8afe22fadb13bbd9a0d90753129b336c"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8afe22fadb13bbd9a0d90753129b336c">curvature_threshold_</a></td></tr>
<tr class="memdesc:a8afe22fadb13bbd9a0d90753129b336c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Thershold used in curvature test. <br /></td></tr>
<tr class="separator:a8afe22fadb13bbd9a0d90753129b336c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e71c3e1eab57f9eac8ff2897200fe5a"><td class="memItemLeft" align="right" valign="top"><a id="a8e71c3e1eab57f9eac8ff2897200fe5a"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a8e71c3e1eab57f9eac8ff2897200fe5a">neighbour_number_</a></td></tr>
<tr class="memdesc:a8e71c3e1eab57f9eac8ff2897200fe5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of neighbours to find. <br /></td></tr>
<tr class="separator:a8e71c3e1eab57f9eac8ff2897200fe5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a257e86a32165cc92f55c9a0b610b7917"><td class="memItemLeft" align="right" valign="top"><a id="a257e86a32165cc92f55c9a0b610b7917"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a257e86a32165cc92f55c9a0b610b7917">search_</a></td></tr>
<tr class="memdesc:a257e86a32165cc92f55c9a0b610b7917"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serch method that will be used for KNN. <br /></td></tr>
<tr class="separator:a257e86a32165cc92f55c9a0b610b7917"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a071c48f5d44f919aba6f8f386fd5e988"><td class="memItemLeft" align="right" valign="top"><a id="a071c48f5d44f919aba6f8f386fd5e988"></a>
NormalPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a></td></tr>
<tr class="memdesc:a071c48f5d44f919aba6f8f386fd5e988"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains normals of the points that will be segmented. <br /></td></tr>
<tr class="separator:a071c48f5d44f919aba6f8f386fd5e988"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e4cd088c8a767b380613c9471cc15d5"><td class="memItemLeft" align="right" valign="top"><a id="a3e4cd088c8a767b380613c9471cc15d5"></a>
std::vector&lt; std::vector&lt; int &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a></td></tr>
<tr class="memdesc:a3e4cd088c8a767b380613c9471cc15d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Contains neighbours of each point. <br /></td></tr>
<tr class="separator:a3e4cd088c8a767b380613c9471cc15d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83457053cb030294787154b4d29a9e87"><td class="memItemLeft" align="right" valign="top"><a id="a83457053cb030294787154b4d29a9e87"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a></td></tr>
<tr class="memdesc:a83457053cb030294787154b4d29a9e87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Point labels that tells to which segment each point belongs. <br /></td></tr>
<tr class="separator:a83457053cb030294787154b4d29a9e87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95f1b3605f488bcaa677d166f2b0f362"><td class="memItemLeft" align="right" valign="top"><a id="a95f1b3605f488bcaa677d166f2b0f362"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a95f1b3605f488bcaa677d166f2b0f362">normal_flag_</a></td></tr>
<tr class="memdesc:a95f1b3605f488bcaa677d166f2b0f362"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set to true then normal/smoothness test will be done during segmentation. It is always set to true for the usual region growing algorithm. It is used for turning on/off the test for smoothness in the child class <a class="el" href="classpcl_1_1_region_growing_r_g_b.html" title="Implements the well known Region Growing algorithm used for segmentation based on color of points....">RegionGrowingRGB</a>. <br /></td></tr>
<tr class="separator:a95f1b3605f488bcaa677d166f2b0f362"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d9823fcc36dd839f1b0e35f5949b468"><td class="memItemLeft" align="right" valign="top"><a id="a2d9823fcc36dd839f1b0e35f5949b468"></a>
std::vector&lt; int &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">num_pts_in_segment_</a></td></tr>
<tr class="memdesc:a2d9823fcc36dd839f1b0e35f5949b468"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tells how much points each segment contains. Used for reserving memory. <br /></td></tr>
<tr class="separator:a2d9823fcc36dd839f1b0e35f5949b468"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af330bc7d3ac671aee8e1a48608608b72"><td class="memItemLeft" align="right" valign="top"><a id="af330bc7d3ac671aee8e1a48608608b72"></a>
std::vector&lt; <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a></td></tr>
<tr class="memdesc:af330bc7d3ac671aee8e1a48608608b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">After the segmentation it will contain the segments. <br /></td></tr>
<tr class="separator:af330bc7d3ac671aee8e1a48608608b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:addb7479a6c8b6a8fd5ca68aadfd9b7cf"><td class="memItemLeft" align="right" valign="top"><a id="addb7479a6c8b6a8fd5ca68aadfd9b7cf"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">number_of_segments_</a></td></tr>
<tr class="memdesc:addb7479a6c8b6a8fd5ca68aadfd9b7cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stores the number of segments. <br /></td></tr>
<tr class="separator:addb7479a6c8b6a8fd5ca68aadfd9b7cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT, typename NormalT&gt;<br />
class pcl::RegionGrowing&lt; PointT, NormalT &gt;</h3>

<p>Implements the well known Region Growing algorithm used for segmentation. Description can be found in the article "Segmentation of point clouds using smoothness constraint" by T. Rabbania, F. A. van den Heuvelb, G. Vosselmanc. In addition to residual test, the possibility to test curvature is added. </p>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a9ef8286d7ced3ff97667653b96a4bd21"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9ef8286d7ced3ff97667653b96a4bd21">&#9670;&nbsp;</a></span>extract()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::extract </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>clusters</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method launches the segmentation algorithm and returns the clusters that were obtained during the segmentation. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">clusters</td><td>clusters that were obtained. Each cluster is an array of point indices. </td></tr>
  </table>
  </dd>
</dl>

<p>被 <a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a9171a8be4eec4a3d841a2fe0b28234a9">pcl::RegionGrowingRGB&lt; PointT, NormalT &gt;</a> 重载.</p>
<div class="fragment"><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;{</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.clear ();</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  clusters.clear ();</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>.clear ();</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>.clear ();</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">num_pts_in_segment_</a>.clear ();</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">number_of_segments_</a> = 0;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160; </div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;  <span class="keywordtype">bool</span> segmentation_is_possible = <a class="code" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ();</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;  <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;  {</div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;    <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;  }</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160; </div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;  segmentation_is_possible = <a class="code" href="classpcl_1_1_region_growing.html#a510496b033f5261bc0325da4a9ec0e3b">prepareForSegmentation</a> ();</div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;  <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;  {</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;    <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;  }</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160; </div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a541edb18fa47990020ceb640186c95dc">findPointNeighbours</a> ();</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">applySmoothRegionGrowingAlgorithm</a> ();</div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">assembleRegions</a> ();</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160; </div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;  clusters.resize (<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.size ());</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;  std::vector&lt;pcl::PointIndices&gt;::iterator cluster_iter_input = clusters.begin ();</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;  <span class="keywordflow">for</span> (std::vector&lt;pcl::PointIndices&gt;::const_iterator cluster_iter = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.begin (); cluster_iter != <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.end (); cluster_iter++)</div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;  {</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;    <span class="keywordflow">if</span> ((<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (cluster_iter-&gt;indices.size ()) &gt;= <a class="code" href="classpcl_1_1_region_growing.html#aaf5fe4e97596798764ebd768193b3054">min_pts_per_cluster_</a>) &amp;&amp;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;        (<span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (cluster_iter-&gt;indices.size ()) &lt;= <a class="code" href="classpcl_1_1_region_growing.html#a740af3118950d0bef662a7ab60177b6a">max_pts_per_cluster_</a>))</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;    {</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;      *cluster_iter_input = *cluster_iter;</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      cluster_iter_input++;</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;    }</div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;  }</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a> = std::vector&lt;pcl::PointIndices&gt; (clusters.begin (), cluster_iter_input);</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;  clusters.resize(<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.size());</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160; </div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;  <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_acceb20854934f4cf77e266eb5a44d4f0"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">pcl::PCLBase::initCompute</a></div><div class="ttdeci">bool initCompute()</div><div class="ttdoc">This method should get called before starting the actual computation.</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:139</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_afc426c4eebb94b7734d4fa556bff1420"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">pcl::PCLBase::deinitCompute</a></div><div class="ttdeci">bool deinitCompute()</div><div class="ttdoc">This method should get called after finishing the actual computation.</div><div class="ttdef"><b>Definition:</b> pcl_base.hpp:174</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a2d9823fcc36dd839f1b0e35f5949b468"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">pcl::RegionGrowing::num_pts_in_segment_</a></div><div class="ttdeci">std::vector&lt; int &gt; num_pts_in_segment_</div><div class="ttdoc">Tells how much points each segment contains. Used for reserving memory.</div><div class="ttdef"><b>Definition:</b> region_growing.h:327</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a3e4cd088c8a767b380613c9471cc15d5"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">pcl::RegionGrowing::point_neighbours_</a></div><div class="ttdeci">std::vector&lt; std::vector&lt; int &gt; &gt; point_neighbours_</div><div class="ttdoc">Contains neighbours of each point.</div><div class="ttdef"><b>Definition:</b> region_growing.h:316</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a510496b033f5261bc0325da4a9ec0e3b"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a510496b033f5261bc0325da4a9ec0e3b">pcl::RegionGrowing::prepareForSegmentation</a></div><div class="ttdeci">virtual bool prepareForSegmentation()</div><div class="ttdoc">This method simply checks if it is possible to execute the segmentation algorithm with the current se...</div><div class="ttdef"><b>Definition:</b> region_growing.hpp:308</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a541edb18fa47990020ceb640186c95dc"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a541edb18fa47990020ceb640186c95dc">pcl::RegionGrowing::findPointNeighbours</a></div><div class="ttdeci">virtual void findPointNeighbours()</div><div class="ttdoc">This method finds KNN for each point and saves them to the array because the algorithm needs to find ...</div><div class="ttdef"><b>Definition:</b> region_growing.hpp:354</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a740af3118950d0bef662a7ab60177b6a"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a740af3118950d0bef662a7ab60177b6a">pcl::RegionGrowing::max_pts_per_cluster_</a></div><div class="ttdeci">int max_pts_per_cluster_</div><div class="ttdoc">Stores the maximum number of points that a cluster needs to contain in order to be considered valid.</div><div class="ttdef"><b>Definition:</b> region_growing.h:286</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a83457053cb030294787154b4d29a9e87"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">pcl::RegionGrowing::point_labels_</a></div><div class="ttdeci">std::vector&lt; int &gt; point_labels_</div><div class="ttdoc">Point labels that tells to which segment each point belongs.</div><div class="ttdef"><b>Definition:</b> region_growing.h:319</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_aaf5fe4e97596798764ebd768193b3054"><div class="ttname"><a href="classpcl_1_1_region_growing.html#aaf5fe4e97596798764ebd768193b3054">pcl::RegionGrowing::min_pts_per_cluster_</a></div><div class="ttdeci">int min_pts_per_cluster_</div><div class="ttdoc">Stores the minimum number of points that a cluster needs to contain in order to be considered valid.</div><div class="ttdef"><b>Definition:</b> region_growing.h:283</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_ad9fdb4c1edc24da8b149866dcfc819d5"><div class="ttname"><a href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">pcl::RegionGrowing::applySmoothRegionGrowingAlgorithm</a></div><div class="ttdeci">void applySmoothRegionGrowingAlgorithm()</div><div class="ttdoc">This function implements the algorithm described in the article &quot;Segmentation of point clouds using s...</div><div class="ttdef"><b>Definition:</b> region_growing.hpp:387</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_addb7479a6c8b6a8fd5ca68aadfd9b7cf"><div class="ttname"><a href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">pcl::RegionGrowing::number_of_segments_</a></div><div class="ttdeci">int number_of_segments_</div><div class="ttdoc">Stores the number of segments.</div><div class="ttdef"><b>Definition:</b> region_growing.h:333</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_af330bc7d3ac671aee8e1a48608608b72"><div class="ttname"><a href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">pcl::RegionGrowing::clusters_</a></div><div class="ttdeci">std::vector&lt; pcl::PointIndices &gt; clusters_</div><div class="ttdoc">After the segmentation it will contain the segments.</div><div class="ttdef"><b>Definition:</b> region_growing.h:330</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_af6effde13de0fe92a2e006dcdcde79ef"><div class="ttname"><a href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">pcl::RegionGrowing::assembleRegions</a></div><div class="ttdeci">void assembleRegions()</div><div class="ttdoc">This function simply assembles the regions from list of point labels. Each cluster is an array of poi...</div><div class="ttdef"><b>Definition:</b> region_growing.hpp:550</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a72b71b0e82a8080dcd26142968eb21e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a72b71b0e82a8080dcd26142968eb21e3">&#9670;&nbsp;</a></span>getSegmentFromPoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::getSegmentFromPoint </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structpcl_1_1_point_indices.html">pcl::PointIndices</a> &amp;&#160;</td>
          <td class="paramname"><em>cluster</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>For a given point this function builds a segment to which it belongs and returns this segment. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">index</td><td>index of the initial point which will be the seed for growing a segment. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">cluster</td><td>cluster to which the point belongs. </td></tr>
  </table>
  </dd>
</dl>

<p>被 <a class="el" href="classpcl_1_1_region_growing_r_g_b.html#ada29f9c9d4c8719ff00ce4d1ef8be55a">pcl::RegionGrowingRGB&lt; PointT, NormalT &gt;</a> 重载.</p>
<div class="fragment"><div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;{</div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;  cluster.indices.clear ();</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160; </div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;  <span class="keywordtype">bool</span> segmentation_is_possible = <a class="code" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ();</div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;  <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;  {</div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;    <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;  }</div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160; </div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;  <span class="comment">// first of all we need to find out if this point belongs to cloud</span></div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;  <span class="keywordtype">bool</span> point_was_found = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;  <span class="keywordtype">int</span> number_of_points = <span class="keyword">static_cast &lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> point = 0; point &lt; number_of_points; point++)</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;    <span class="keywordflow">if</span> ( (*<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>)[point] == index)</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;    {</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;      point_was_found = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;      <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;    }</div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160; </div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;  <span class="keywordflow">if</span> (point_was_found)</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;  {</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.empty ())</div>
<div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;    {</div>
<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>.clear ();</div>
<div class="line"><a name="l00608"></a><span class="lineno">  608</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>.clear ();</div>
<div class="line"><a name="l00609"></a><span class="lineno">  609</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a2d9823fcc36dd839f1b0e35f5949b468">num_pts_in_segment_</a>.clear ();</div>
<div class="line"><a name="l00610"></a><span class="lineno">  610</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#addb7479a6c8b6a8fd5ca68aadfd9b7cf">number_of_segments_</a> = 0;</div>
<div class="line"><a name="l00611"></a><span class="lineno">  611</span>&#160; </div>
<div class="line"><a name="l00612"></a><span class="lineno">  612</span>&#160;      segmentation_is_possible = <a class="code" href="classpcl_1_1_region_growing.html#a510496b033f5261bc0325da4a9ec0e3b">prepareForSegmentation</a> ();</div>
<div class="line"><a name="l00613"></a><span class="lineno">  613</span>&#160;      <span class="keywordflow">if</span> ( !segmentation_is_possible )</div>
<div class="line"><a name="l00614"></a><span class="lineno">  614</span>&#160;      {</div>
<div class="line"><a name="l00615"></a><span class="lineno">  615</span>&#160;        <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;      }</div>
<div class="line"><a name="l00618"></a><span class="lineno">  618</span>&#160; </div>
<div class="line"><a name="l00619"></a><span class="lineno">  619</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a541edb18fa47990020ceb640186c95dc">findPointNeighbours</a> ();</div>
<div class="line"><a name="l00620"></a><span class="lineno">  620</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#ad9fdb4c1edc24da8b149866dcfc819d5">applySmoothRegionGrowingAlgorithm</a> ();</div>
<div class="line"><a name="l00621"></a><span class="lineno">  621</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#af6effde13de0fe92a2e006dcdcde79ef">assembleRegions</a> ();</div>
<div class="line"><a name="l00622"></a><span class="lineno">  622</span>&#160;    }</div>
<div class="line"><a name="l00623"></a><span class="lineno">  623</span>&#160;    <span class="comment">// if we have already made the segmentation, then find the segment</span></div>
<div class="line"><a name="l00624"></a><span class="lineno">  624</span>&#160;    <span class="comment">// to which this point belongs</span></div>
<div class="line"><a name="l00625"></a><span class="lineno">  625</span>&#160;    std::vector &lt;pcl::PointIndices&gt;::iterator i_segment;</div>
<div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;    <span class="keywordflow">for</span> (i_segment = <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.begin (); i_segment != <a class="code" href="classpcl_1_1_region_growing.html#af330bc7d3ac671aee8e1a48608608b72">clusters_</a>.end (); i_segment++)</div>
<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;    {</div>
<div class="line"><a name="l00628"></a><span class="lineno">  628</span>&#160;      <span class="keywordtype">bool</span> segment_was_found = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00629"></a><span class="lineno">  629</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i_point = 0; i_point &lt; i_segment-&gt;indices.size (); i_point++)</div>
<div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;      {</div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;        <span class="keywordflow">if</span> (i_segment-&gt;indices[i_point] == index)</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160;        {</div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;          segment_was_found = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;          cluster.indices.clear ();</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;          cluster.indices.reserve (i_segment-&gt;indices.size ());</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;          std::copy (i_segment-&gt;indices.begin (), i_segment-&gt;indices.end (), std::back_inserter (cluster.indices));</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;          <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        }</div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;      }</div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;      <span class="keywordflow">if</span> (segment_was_found)</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;      {</div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;        <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;      }</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;    }<span class="comment">// next segment</span></div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;  }<span class="comment">// end if point was found</span></div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160; </div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160;  <a class="code" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ();</div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_aaee847c8a517ebf365bad2cb182a6626"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">pcl::PCLBase::indices_</a></div><div class="ttdeci">IndicesPtr indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:153</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a3ac4219f1374555e9dd76a7338905a6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ac4219f1374555e9dd76a7338905a6d">&#9670;&nbsp;</a></span>growRegion()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::growRegion </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>initial_seed</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>segment_number</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This method grows a segment for the given seed point. And returns the number of its points. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">initial_seed</td><td>index of the point that will serve as the seed point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">segment_number</td><td>indicates which number this segment will have </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;{</div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;  std::queue&lt;int&gt; seeds;</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;  seeds.push (initial_seed);</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>[initial_seed] = segment_number;</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160; </div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;  <span class="keywordtype">int</span> num_pts_in_segment = 1;</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160; </div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;  <span class="keywordflow">while</span> (!seeds.empty ())</div>
<div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;  {</div>
<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;    <span class="keywordtype">int</span> curr_seed;</div>
<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;    curr_seed = seeds.front ();</div>
<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;    seeds.pop ();</div>
<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160; </div>
<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;    <span class="keywordtype">size_t</span> i_nghbr = 0;</div>
<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;    <span class="keywordflow">while</span> ( i_nghbr &lt; <a class="code" href="classpcl_1_1_region_growing.html#a8e71c3e1eab57f9eac8ff2897200fe5a">neighbour_number_</a> &amp;&amp; i_nghbr &lt; <a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>[curr_seed].size () )</div>
<div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;    {</div>
<div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;      <span class="keywordtype">int</span> index = <a class="code" href="classpcl_1_1_region_growing.html#a3e4cd088c8a767b380613c9471cc15d5">point_neighbours_</a>[curr_seed][i_nghbr];</div>
<div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;      <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>[index] != -1)</div>
<div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;      {</div>
<div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;        i_nghbr++;</div>
<div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;      }</div>
<div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160; </div>
<div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;      <span class="keywordtype">bool</span> is_a_seed = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;      <span class="keywordtype">bool</span> belongs_to_segment = <a class="code" href="classpcl_1_1_region_growing.html#a71c8914239d04758cc94e59886b8308a">validatePoint</a> (initial_seed, curr_seed, index, is_a_seed);</div>
<div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160; </div>
<div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;      <span class="keywordflow">if</span> (belongs_to_segment == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;      {</div>
<div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;        i_nghbr++;</div>
<div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;        <span class="keywordflow">continue</span>;</div>
<div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;      }</div>
<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160; </div>
<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;      <a class="code" href="classpcl_1_1_region_growing.html#a83457053cb030294787154b4d29a9e87">point_labels_</a>[index] = segment_number;</div>
<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;      num_pts_in_segment++;</div>
<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160; </div>
<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;      <span class="keywordflow">if</span> (is_a_seed)</div>
<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;      {</div>
<div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;        seeds.push (index);</div>
<div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;      }</div>
<div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160; </div>
<div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;      i_nghbr++;</div>
<div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;    }<span class="comment">// next neighbour</span></div>
<div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;  }<span class="comment">// next seed</span></div>
<div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160; </div>
<div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;  <span class="keywordflow">return</span> (num_pts_in_segment);</div>
<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a71c8914239d04758cc94e59886b8308a"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a71c8914239d04758cc94e59886b8308a">pcl::RegionGrowing::validatePoint</a></div><div class="ttdeci">virtual bool validatePoint(int initial_seed, int point, int nghbr, bool &amp;is_a_seed) const</div><div class="ttdoc">This function is checking if the point with index 'nghbr' belongs to the segment. If so,...</div><div class="ttdef"><b>Definition:</b> region_growing.hpp:494</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a8e71c3e1eab57f9eac8ff2897200fe5a"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a8e71c3e1eab57f9eac8ff2897200fe5a">pcl::RegionGrowing::neighbour_number_</a></div><div class="ttdeci">unsigned int neighbour_number_</div><div class="ttdoc">Number of neighbours to find.</div><div class="ttdef"><b>Definition:</b> region_growing.h:307</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a1f7a093b9cdc5337309cdeabffc1cd92"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f7a093b9cdc5337309cdeabffc1cd92">&#9670;&nbsp;</a></span>setCurvatureTestFlag()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setCurvatureTestFlag </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Allows to turn on/off the curvature test. Note that at least one test (residual or curvature) must be turned on. If you are turning curvature test off then residual test will be turned on automatically. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>new value for curvature test. If set to true then the test will be turned on </td></tr>
  </table>
  </dd>
</dl>

<p>被 <a class="el" href="classpcl_1_1_region_growing_r_g_b.html#af2bd79d30676cddeb1bdb1fbf5facf50">pcl::RegionGrowingRGB&lt; PointT, NormalT &gt;</a> 重载.</p>
<div class="fragment"><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;{</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a> = value;</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160; </div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a> == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a> == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    <a class="code" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a1a5665f6c84af901ed018521b8b3677d"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">pcl::RegionGrowing::curvature_flag_</a></div><div class="ttdeci">bool curvature_flag_</div><div class="ttdoc">If set to true then curvature test will be done during segmentation.</div><div class="ttdef"><b>Definition:</b> region_growing.h:292</div></div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_aa217ad1c027e687ff378edb852ca3052"><div class="ttname"><a href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">pcl::RegionGrowing::residual_flag_</a></div><div class="ttdeci">bool residual_flag_</div><div class="ttdoc">If set to true then residual test will be done during segmentation.</div><div class="ttdef"><b>Definition:</b> region_growing.h:295</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ad7554b09a34b2997992c44b947d4ac07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7554b09a34b2997992c44b947d4ac07">&#9670;&nbsp;</a></span>setCurvatureThreshold()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setCurvatureThreshold </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>curvature</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allows to set curvature threshold used for testing the points. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">curvature</td><td>new threshold value for curvature testing </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;{</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a8afe22fadb13bbd9a0d90753129b336c">curvature_threshold_</a> = curvature;</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a8afe22fadb13bbd9a0d90753129b336c"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a8afe22fadb13bbd9a0d90753129b336c">pcl::RegionGrowing::curvature_threshold_</a></div><div class="ttdeci">float curvature_threshold_</div><div class="ttdoc">Thershold used in curvature test.</div><div class="ttdef"><b>Definition:</b> region_growing.h:304</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a26a874b69b4c786886fece175990e727"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a26a874b69b4c786886fece175990e727">&#9670;&nbsp;</a></span>setInputNormals()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setInputNormals </td>
          <td>(</td>
          <td class="paramtype">const NormalPtr &amp;&#160;</td>
          <td class="paramname"><em>norm</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This method sets the normals. They are needed for the algorithm, so if no normals will be set, the algorithm would not be able to segment the points. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">norm</td><td>normals that will be used in the algorithm </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;{</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a> != 0)</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;    <a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>.reset ();</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160; </div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a> = norm;</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a071c48f5d44f919aba6f8f386fd5e988"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">pcl::RegionGrowing::normals_</a></div><div class="ttdeci">NormalPtr normals_</div><div class="ttdoc">Contains normals of the points that will be segmented.</div><div class="ttdef"><b>Definition:</b> region_growing.h:313</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a4d2c77b68143901495b42fd0dfbb241c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d2c77b68143901495b42fd0dfbb241c">&#9670;&nbsp;</a></span>setNumberOfNeighbours()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setNumberOfNeighbours </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>neighbour_number</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allows to set the number of neighbours. For more information check the article. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">neighbour_number</td><td>number of neighbours to use </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;{</div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a8e71c3e1eab57f9eac8ff2897200fe5a">neighbour_number_</a> = neighbour_number;</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ad1846b7d16b40f3187c42c81b80abc79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1846b7d16b40f3187c42c81b80abc79">&#9670;&nbsp;</a></span>setResidualTestFlag()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setResidualTestFlag </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Allows to turn on/off the residual test. Note that at least one test (residual or curvature) must be turned on. If you are turning residual test off then curvature test will be turned on automatically. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>new value for residual test. If set to true then the test will be turned on </td></tr>
  </table>
  </dd>
</dl>

<p>被 <a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a9ee93524947e897d1f42f50e2e3f91b4">pcl::RegionGrowingRGB&lt; PointT, NormalT &gt;</a> 重载.</p>
<div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;{</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a> = value;</div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160; </div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a> == <span class="keyword">false</span> &amp;&amp; <a class="code" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a> == <span class="keyword">false</span>)</div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;    <a class="code" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a> = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a1e3de83fe8e15eccc7f56f4f8762d936"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e3de83fe8e15eccc7f56f4f8762d936">&#9670;&nbsp;</a></span>setResidualThreshold()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setResidualThreshold </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>residual</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allows to set residual threshold used for testing the points. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">residual</td><td>new threshold value for residual testing </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;{</div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#ab9039b5534be233e1aa26bbadeecd42a">residual_threshold_</a> = residual;</div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_ab9039b5534be233e1aa26bbadeecd42a"><div class="ttname"><a href="classpcl_1_1_region_growing.html#ab9039b5534be233e1aa26bbadeecd42a">pcl::RegionGrowing::residual_threshold_</a></div><div class="ttdeci">float residual_threshold_</div><div class="ttdoc">Thershold used in residual test.</div><div class="ttdef"><b>Definition:</b> region_growing.h:301</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a23191c1b6a711340a91740b3717140ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a23191c1b6a711340a91740b3717140ff">&#9670;&nbsp;</a></span>setSearchMethod()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setSearchMethod </td>
          <td>(</td>
          <td class="paramtype">const KdTreePtr &amp;&#160;</td>
          <td class="paramname"><em>tree</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allows to set search method that will be used for finding KNN. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">tree</td><td>pointer to a <a class="el" href="classpcl_1_1_kd_tree.html" title="KdTree represents the base spatial locator class for kd-tree implementations.">KdTree</a> </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;{</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a257e86a32165cc92f55c9a0b610b7917">search_</a> != 0)</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;    <a class="code" href="classpcl_1_1_region_growing.html#a257e86a32165cc92f55c9a0b610b7917">search_</a>.reset ();</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a257e86a32165cc92f55c9a0b610b7917">search_</a> = tree;</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a257e86a32165cc92f55c9a0b610b7917"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a257e86a32165cc92f55c9a0b610b7917">pcl::RegionGrowing::search_</a></div><div class="ttdeci">KdTreePtr search_</div><div class="ttdoc">Serch method that will be used for KNN.</div><div class="ttdef"><b>Definition:</b> region_growing.h:310</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af10c614af98ec42bacf015f7db6b9935"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af10c614af98ec42bacf015f7db6b9935">&#9670;&nbsp;</a></span>setSmoothModeFlag()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setSmoothModeFlag </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function allows to turn on/off the smoothness constraint. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>new mode value, if set to true then the smooth version will be used. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;{</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a8d9411960ec9656fa6e727e0558d57f7">smooth_mode_flag_</a> = value;</div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a8d9411960ec9656fa6e727e0558d57f7"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a8d9411960ec9656fa6e727e0558d57f7">pcl::RegionGrowing::smooth_mode_flag_</a></div><div class="ttdeci">bool smooth_mode_flag_</div><div class="ttdoc">Flag that signalizes if the smoothness constraint will be used.</div><div class="ttdef"><b>Definition:</b> region_growing.h:289</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aaa88700937bc1090bfca521a93b80f71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaa88700937bc1090bfca521a93b80f71">&#9670;&nbsp;</a></span>setSmoothnessThreshold()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::setSmoothnessThreshold </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>theta</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allows to set smoothness threshold used for testing the points. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">theta</td><td>new threshold value for the angle between normals </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;{</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;  <a class="code" href="classpcl_1_1_region_growing.html#a87c8818e2c3eb306f1e44fa98bb55a89">theta_threshold_</a> = theta;</div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_region_growing_html_a87c8818e2c3eb306f1e44fa98bb55a89"><div class="ttname"><a href="classpcl_1_1_region_growing.html#a87c8818e2c3eb306f1e44fa98bb55a89">pcl::RegionGrowing::theta_threshold_</a></div><div class="ttdeci">float theta_threshold_</div><div class="ttdoc">Thershold used for testing the smoothness between points.</div><div class="ttdef"><b>Definition:</b> region_growing.h:298</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a71c8914239d04758cc94e59886b8308a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71c8914239d04758cc94e59886b8308a">&#9670;&nbsp;</a></span>validatePoint()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename NormalT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_region_growing.html">pcl::RegionGrowing</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, <a class="el" href="structpcl_1_1_normal.html">NormalT</a> &gt;::validatePoint </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>initial_seed</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>point</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nghbr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>is_a_seed</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>This function is checking if the point with index 'nghbr' belongs to the segment. If so, then it returns true. It also checks if this point can serve as the seed. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">initial_seed</td><td>index of the initial point that was passed to the <a class="el" href="classpcl_1_1_region_growing.html#a3ac4219f1374555e9dd76a7338905a6d" title="This method grows a segment for the given seed point. And returns the number of its points.">growRegion()</a> function </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">point</td><td>index of the current seed point </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nghbr</td><td>index of the point that is neighbour of the current seed </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">is_a_seed</td><td>this value is set to true if the point with index 'nghbr' can serve as the seed </td></tr>
  </table>
  </dd>
</dl>

<p>被 <a class="el" href="classpcl_1_1_region_growing_r_g_b.html#a749ce5bf131aa92578762d916fd314df">pcl::RegionGrowingRGB&lt; PointT, NormalT &gt;</a> 重载.</p>
<div class="fragment"><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;{</div>
<div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;  is_a_seed = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160; </div>
<div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;  <span class="keywordtype">float</span> cosine_threshold = cosf (<a class="code" href="classpcl_1_1_region_growing.html#a87c8818e2c3eb306f1e44fa98bb55a89">theta_threshold_</a>);</div>
<div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;  <span class="keywordtype">float</span> data[4];</div>
<div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160; </div>
<div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;  data[0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[0];</div>
<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;  data[1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[1];</div>
<div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;  data[2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[2];</div>
<div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;  data[3] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[point].data[3];</div>
<div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;  Eigen::Map&lt;Eigen::Vector3f&gt; initial_point (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (data));</div>
<div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;  Eigen::Map&lt;Eigen::Vector3f&gt; initial_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[point].normal));</div>
<div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160; </div>
<div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;  <span class="comment">//check the angle between normals</span></div>
<div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a8d9411960ec9656fa6e727e0558d57f7">smooth_mode_flag_</a> == <span class="keyword">true</span>)</div>
<div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;  {</div>
<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; nghbr_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[nghbr].normal));</div>
<div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;    <span class="keywordtype">float</span> dot_product = fabsf (nghbr_normal.dot (initial_normal));</div>
<div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;    <span class="keywordflow">if</span> (dot_product &lt; cosine_threshold)</div>
<div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;    {</div>
<div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;      <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;    }</div>
<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  }</div>
<div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;  <span class="keywordflow">else</span></div>
<div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;  {</div>
<div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; nghbr_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[nghbr].normal));</div>
<div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;    Eigen::Map&lt;Eigen::Vector3f&gt; initial_seed_normal (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[initial_seed].normal));</div>
<div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;    <span class="keywordtype">float</span> dot_product = fabsf (nghbr_normal.dot (initial_seed_normal));</div>
<div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;    <span class="keywordflow">if</span> (dot_product &lt; cosine_threshold)</div>
<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;      <span class="keywordflow">return</span> (<span class="keyword">false</span>);</div>
<div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;  }</div>
<div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160; </div>
<div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;  <span class="comment">// check the curvature if needed</span></div>
<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#a1a5665f6c84af901ed018521b8b3677d">curvature_flag_</a> &amp;&amp; <a class="code" href="classpcl_1_1_region_growing.html#a071c48f5d44f919aba6f8f386fd5e988">normals_</a>-&gt;points[nghbr].curvature &gt; <a class="code" href="classpcl_1_1_region_growing.html#a8afe22fadb13bbd9a0d90753129b336c">curvature_threshold_</a>)</div>
<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;  {</div>
<div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;    is_a_seed = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;  }</div>
<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160; </div>
<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;  <span class="comment">// check the residual if needed</span></div>
<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;  <span class="keywordtype">float</span> data_1[4];</div>
<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;  </div>
<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;  data_1[0] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[0];</div>
<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;  data_1[1] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[1];</div>
<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;  data_1[2] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[2];</div>
<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;  data_1[3] = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;points[nghbr].data[3];</div>
<div class="line"><a name="l00540"></a><span class="lineno">  540</span>&#160;  Eigen::Map&lt;Eigen::Vector3f&gt; nghbr_point (<span class="keyword">static_cast&lt;</span><span class="keywordtype">float</span>*<span class="keyword">&gt;</span> (data_1));</div>
<div class="line"><a name="l00541"></a><span class="lineno">  541</span>&#160;  <span class="keywordtype">float</span> residual = fabsf (initial_normal.dot (initial_point - nghbr_point));</div>
<div class="line"><a name="l00542"></a><span class="lineno">  542</span>&#160;  <span class="keywordflow">if</span> (<a class="code" href="classpcl_1_1_region_growing.html#aa217ad1c027e687ff378edb852ca3052">residual_flag_</a> &amp;&amp; residual &gt; <a class="code" href="classpcl_1_1_region_growing.html#ab9039b5534be233e1aa26bbadeecd42a">residual_threshold_</a>)</div>
<div class="line"><a name="l00543"></a><span class="lineno">  543</span>&#160;    is_a_seed = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00544"></a><span class="lineno">  544</span>&#160; </div>
<div class="line"><a name="l00545"></a><span class="lineno">  545</span>&#160;  <span class="keywordflow">return</span> (<span class="keyword">true</span>);</div>
<div class="line"><a name="l00546"></a><span class="lineno">  546</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCLBase::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>segmentation/include/pcl/segmentation/<a class="el" href="region__growing_8h_source.html">region_growing.h</a></li>
<li>segmentation/include/pcl/segmentation/impl/<a class="el" href="region__growing_8hpp_source.html">region_growing.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_region_growing.html">RegionGrowing</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
